package kibahed.university.effizientealgorithmen.interfaces;

import java.util.Set;

/**
 * 
 * @author Bernhard Kinast
 * @author Daniel Heily
 *
 */

public interface IGraph {
	
	public String getTspName();
	
	public void setTspName(String tspName);
	
	public IVertex[] getVertexes();
	
	public Set<IEdge> getEdges();
	
	public void setEdges(Set<IEdge> edges);
	
	public void addVertex(IVertex vertex);
	
	public boolean[][] getAdjecencyMatrix();
	
	public double[][] getCostMatrix();
	
	public void setCostMatrix(double[][] costMatrix);
	/**
	 * Use the Method of the Algorithm instead
	 * @param path
	 */
	@Deprecated
	public void setEdgeTour(IEdge[] path);
	/**
	 * Use the Method of the Algorithm instead
	 * @return
	 */
	@Deprecated
	public IEdge[] getEdgeTour();
	
	public int[] getNodeTour();
	
	public void setNodeTour(int[] nodeTour);
	
	public void addMessages(String string);
	
	public String getMessages();
	
	public void clearMessages();
	
	public IVertex getVertexForEdge(IEdge edge);

	public IEdge getEdgeBetweenVertices(int id, int id2);
}
